package com.cruise.game.service.agent;

import com.cruise.game.model.param.user.WithdrawParam;
import com.cruise.game.model.vo.common.PageResult;
import com.cruise.game.model.vo.user.WithdrawalVO;

import java.util.Map;

/**
 * 代理提现服务接口
 *
 * @author cruise
 * @date 2025-02-28
 */
public interface AgentWithdrawalService {

    /**
     * 提交提现申请
     *
     * @param userId 用户ID
     * @param param 提现参数
     * @return 提现申请ID
     */
    Long submitWithdrawalApplication(Long userId, WithdrawParam param);

    /**
     * 获取提现申请列表
     *
     * @param userId 用户ID
     * @param status 申请状态
     * @param page 页码
     * @param pageSize 每页条数
     * @return 提现申请列表
     */
    PageResult<WithdrawalVO> getWithdrawalList(Long userId, String status, Integer page, Integer pageSize);

    /**
     * 取消提现申请
     *
     * @param userId 用户ID
     * @param withdrawalId 提现申请ID
     * @return 是否成功
     */
    boolean cancelWithdrawalApplication(Long userId, Long withdrawalId);

    /**
     * 获取提现统计
     *
     * @param userId 用户ID
     * @return 统计信息
     */
    Map<String, Object> getWithdrawalStatistics(Long userId);
}